#ifndef _ABSTRUCTPRODUCT_H_
#define _ABSTRUCTPRODUCT_H_

class abstructproductA {
public:
    virtual ~abstructproductA();

protected:
    abstructproductA();
private:

};

class abstructproductB {
public:
    virtual ~abstructproductB();

protected:
    abstructproductB();
private:

};

class productA1 : public abstructproductA {
public:
    productA1();
    ~productA1();
protected:
private:
};

class productA2 : public abstructproductA {
public:
    productA2();
    ~productA2();
protected:
private:
};

class productB1 : public abstructproductB {
public:
    productB1();
    ~productB1();
protected:
private:
};

class productB2 : public abstructproductB {
public:
    productB2();
    ~productB2();
protected:
private:
};

#endif